home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Chaos CD Blue
/
Chaos_CD_Blue__[1999].iso
/
contrib
/
cryptron
/
Diplom_original
/
isdntel1.asm
< prev
Wrap
Assembly Source File
|
1999-11-21
|
55KB
|
2,868 lines
DPL1 EQU 084h ; DS80C320
DPH1 EQU 085h ; DS80C320
DPS EQU 086h ; DS80C320
CKCON EQU 08Eh ; DS80C320
EXIF EQU 091h ; DS80C320
SCON1 EQU 0C0h ; DS80C320
SBUF1 EQU 0C1h ; DS80C320
TA EQU 0C7h ; DS80C320
WDCON EQU 0D8h ; DS80C320
EIE EQU 0E8h ; DS80C320
EIP EQU 0F8h ; DS80C320
dc_status EQU 020h
dc_ir EQU 028h
dc_dsr1 EQU 029h
dc_dsr2 EQU 02Ah
dc_der EQU 02Bh
dc_lsr EQU 02Ch
dc_d2_rec_typ EQU 02Dh
kyb_data_p_irq EQU 030h ; Tasten-Code
kyb_data_p_main EQU 031h ; Tasten-Code
period_timer EQU 034h
period_min EQU 035h
rtc_cal EQU 036h
dc_d2_tei EQU 040h
dc_d2_ns EQU 041h
dc_d2_nr EQU 042h
dc_d3_cr EQU 048h
dc_bc_nr EQU 04Ch
dc_trans_buf_l EQU 068h
dc_trans_buf_p EQU 069h
dc_reciv_buf_l EQU 06Ah
dc_reciv_buf_p EQU 06Bh
menu_back_h EQU 070h
menu_back_l EQU 071h
input_buffer_p EQU 07Fh
input_buffer EQU 080h ; Eingabe Buffer 020h Bytes
menu_start_adr EQU 0A0h ; Start Addresse Menu Tasten 010h Bytes
kyb_data_buffer EQU 0B0h ; Tasten-Code
stack_init EQU 0BFh ; STACK 040h Bytes
; -----------------------------------------------------------------------------
input_buf_max EQU 014h
X_Dc_Trans_Buf EQU 01000h ; D-Chanel Transmit Buffer 4 * 0FFh Bytes
X_Dc_Reciv_Buf EQU 02000h ; D-Chanel Reciece Buffer 4 * 0FFh Bytes
Dc_buffer_max EQU 0FFh
X_RTC_Ctrl EQU 09FF8h
X_RTC_Sec EQU 09FF9h
X_RTC_Min EQU 09FFAh
X_RTC_Hour EQU 09FFBh
X_RTC_Day EQU 09FFCh
X_RTC_Date EQU 09FFDh
X_RTC_Month EQU 09FFEh
X_RTC_Year EQU 09FFFh
X_LCD_Ctrl EQU 0A000h
X_LCD_Data EQU 0A001h
X_KYB EQU 0C000h
X_DSC_CrIr EQU 0E000h
X_DSC_Data EQU 0E001h
X_DSC_dsr1 EQU 0E002h
X_DSC_der EQU 0E003h
X_DSC_DCB EQU 0E004h
X_DSC_BbB EQU 0E005h
X_DSC_BcB EQU 0E006h
X_DSC_dsr2 EQU 0E007h
R_DSC_CrIr EQU 000h ; Command / Intrrupt R/W
R_DSC_Data EQU 001h ; Data R/W
R_DSC_dsr1 EQU 002h ; Dc Status Reg. Nr1 R 1
R_DSC_der EQU 003h ; Dc Error Reg. R 2
R_DSC_DCB EQU 004h ; Dc Data R/W 8/16/32
R_DSC_BbB EQU 005h ; Bb Data R/W 1
R_DSC_BcB EQU 006h ; Bc Data R/W 1
R_DSC_dsr2 EQU 007h ; Dc Status Reg. Nr2 R
DSCi_init EQU 021h ; Init Reg. R/W 1
DSCi_init2 EQU 020h ; Init Reg. Nr2 R/W 1
DSCi_lsr EQU 0A1h ; LIU Status Reg. R 1
DSCi_lpr EQU 0A2h ; LIU Priority Reg. R/W 1
DSCi_lmr1 EQU 0A3h ; LIU Mode Reg. Nr1 R/W 1
DSCi_lmr2 EQU 0A4h ; LIU Mode Reg. Nr2 R/W 1
DSCi_mf EQU 0A6h ; LIU MultiFrame Reg. R/W 1
DSCi_mfsb EQU 0A7h ; LIU S-Bit Status Reg. R 1
DSCi_mfqb EQU 0A8h ; LIU Q-Bit Buffer W 1
DSCi_mcr1 EQU 041h ; MUX Control Reg. Nr1 R/W 1
DSCi_mcr2 EQU 042h ; MUX Control Reg. Nr2 R/W 1
DSCi_mcr3 EQU 043h ; MUX Control Reg. Nr3 R/W 1
DSCi_mcr4 EQU 044h ; MUX Control Reg. Nr4 R/W 1
DSCi_xcoef EQU 061h ; MAP X-Filter Coef. R/W 8
DSCi_rcoef EQU 062h ; MAP R-Filter Coef. R/W 8
DSCi_gxcoef EQU 063h ; MAP GX Gain Coef. R/W 2
DSCi_grcoef EQU 064h ; MAP GR Gain Coef. R/W 2
DSCi_gercoef EQU 065h ; MAP GER Gain Coef. R/W 2
DSCi_stgcoef EQU 066h ; MAP Sidetone Gain R/W 2
DSCi_ftgr EQU 067h ; MAP Freq. Tone Gen. R/W 2
DSCi_atgr EQU 068h ; MAP Ampl. Tone Gen. R/W 2
DSCi_mmr1 EQU 069h ; MAP Mode Reg. Nr1 R/W 1
DSCi_mmr2 EQU 06Ah ; MAP Mode Reg. Nr2 R/W 1
DSCi_mmr3 EQU 06Ch ; MAP Mode Reg. Nr3 R/W 1
DSCi_stra EQU 06Dh ; MAP Sec. Tone Ampl. R/W 1
DSCi_strf EQU 06Eh ; MAP Sec. Tone Freq. R/W 1
DSCi_peakx EQU 070h ; MAP Trans Peak Reg. R 1
DSCi_peakr EQU 071h ; MAP Reciv Peak Reg. R 1
DSCi_frar EQU 081h ; DLC First Reciv Adr R/W 3
DSCi_srar EQU 082h ; DLC Sec. Reciv Adr R/W 3
DSCi_tar EQU 083h ; DLC Trans Addr Reg. R/W 2
DSCi_drlr EQU 084h ; DLC Dc Reciv Limit R/W 2
DSCi_dtcr EQU 085h ; DLC Dc Trans Count R/W 2
DSCi_dmr1 EQU 086h ; DLC Mode Reg. Nr 1 R/W 1
DSCi_dmr2 EQU 087h ; DLC Mode Reg. Nr 2 R/W 2
DSCi_drcr EQU 089h ; DLC Dc Reciv Count R 2
DSCi_rngr1 EQU 08Ah ; DLC Random Gen. Nr1 R/W 1
DSCi_rngr2 EQU 08Bh ; DLC Random Gen. Nr2 R/W 1
DSCi_frar4 EQU 08Ch ; DLC First Reciv Adr4 R/W 1
DSCi_srar4 EQU 08Dh ; DLC Sec. Reciv Adr4 R/W 1
DSCi_dmr3 EQU 08Eh ; DLC Mode Reg. Nr 3 R/W 1
DSCi_dmr4 EQU 08Fh ; DLC Mode Reg. Nr 4 R/W 1
DSCi_asr EQU 091h ; DLC Adr Status Reg. R 1
DSCi_efcr EQU 092h ; DLC Ext. FIFO Ctrl. R/W 1
DSCi_ppcr1 EQU 0C0h ; PP Ctrl. Reg. Nr1 R/W 1
DSCi_ppsr EQU 0C1h ; PP Status Reg. R 1
DSCi_ppier EQU 0C2h ; PP Irq Enable Reg. R/W 1
DSCi_mdr EQU 0C3h ; PP Monitor Data R/W 1
DSCi_cidr0 EQU 0C4h ; PP C/I Data 0 R/W 1
DSCi_cidr1 EQU 0C5h ; PP C/I Data 1 R/W 1
DSCi_ppcr2 EQU 0C8h ; PP Ctrl. Reg. Nr2 R/W 1
DSCi_ppcr3 EQU 0C9h ; PP Ctrl. Reg. Nr3 R/W 1
; -----------------------------------------------------------------------------
ORG 00000h ; RESET
JMP start
ORG 00003h ; IRQ Extern0
LJMP irq_isdn
ORG 0000Bh ; IRQ Timer0
RETI
ORG 00013h ; IRQ Extern1
LJMP irq_kyb
ORG 0001Bh ; IRQ Timer1
RETI
ORG 00023h ; IRQ Serial0
RETI
ORG 0002Bh ; IRQ Timer2
RETI
ORG 00033h ; IRQ Power Fail
RETI
ORG 0003Bh ; IRQ Serial1
RETI
ORG 00043h ; IRQ Extern2
RETI
ORG 0004Bh ; IRQ Extern3
RETI
ORG 00053h ; IRQ Extern4
RETI
ORG 0005Bh ; IRQ Extern5
RETI
ORG 00063h ; IRQ Watchdog
LJMP irq_period
; -----------------------------------------------------------------------------
ORG 00070h
stack_error: MOV A, #001h
CALL lcd_wr_ctrl
MOV DPTR, #txt_stack_error
CALL lcd_str
SJMP $
; -----------------------------------------------------------------------------
ORG 00080h
start: MOV SP, #stack_init
MOV R0, #000h
CLR A
mem_clr: MOV @R0, A
INC R0
CJNE R0, #080h, mem_clr
CALL cpu_init
CALL lcd_init
CALL inp_buf_init
CALL menu_init
CALL dsc_init
MOV kyb_data_p_main, #000h
MOV kyb_data_p_irq, #000h
main_0: MOV A, SP
CJNE A, #stack_init, stack_error
main_1: MOV A, kyb_data_p_main
CJNE A, kyb_data_p_irq, main_2
SJMP main_1
main_2: MOV R0, A
INC A
ANL A, #007h
MOV kyb_data_p_main, A
MOV A, R0
ADD A, #kyb_data_buffer
MOV R0, A
MOV A, @R0
CJNE A, #000h, main_3
SJMP main_0
main_3: JNB ACC.6, main_4
JB ACC.5, main_5
MOV DPS, #000h ; Gross Buchstabe
DEC A
ANL A, #007h
RL A
ADD A, #menu_start_adr
MOV R0, A
MOV A, @R0
MOV DPH, A
INC R0
MOV A, @R0
MOV DPL, A
CLR A
JMP @A+DPTR
main_4: JB dc_status.4, main_6
CALL inp_buf_add ; Ziffer
LJMP main_0
main_6: LJMP main_dail
main_5: ; Klien Buchstabe
CJNE A, #'p', main_10
LJMP main_period
main_10: CJNE A, #'o', main_11
LJMP main_hsw_off
main_11: CJNE A, #'i', main_12
LJMP main_hsw_on
main_12: CJNE A, #'r', main_13
LJMP main_isdn_reciv
main_13: CJNE A, #'u', main_14
LJMP main_show_rtc
main_14:
CALL inp_buf_add
LJMP main_0
; -----------------------------------------------------------------------------
main_period: ; MOV A, #'p'
; CALL inp_buf_add
LJMP main_0
main_hsw_off: CALL lcd_rd_ctrl
MOV R2, A
MOV A, #0A7h
CALL lcd_wr_ctrl
MOV A, #0A1h
CALL lcd_wr_data
MOV A, R2
ORL A, #080h
CALL lcd_wr_ctrl
MOV DPS, #000h
MOV DPTR, #dat_d3_discon
CALL dc_send_d3_pack
CLR dc_status.4
LJMP main_0
main_hsw_on: CALL lcd_rd_ctrl
MOV R2, A
MOV A, #0A7h
CALL lcd_wr_ctrl
MOV A, #0DFh
CALL lcd_wr_data
MOV A, R2
ORL A, #080h
CALL lcd_wr_ctrl
JB dc_status.3, main_hsw_on_1
CALL dc_activate
MOV A, #002h
CALL wait_period
CALL dc_sabme
MOV A, #002h
CALL wait_period
MOV DPS, #000h
MOV DPTR, #dat_d3_setup_a
CALL dc_send_d3_pack
SETB dc_status.4
LJMP main_0
main_hsw_on_1:
MOV A, #007h
CALL dc_send_d3_byte
LJMP main_0
main_dail: MOV DPS, #001h
MOV DPTR, #X_Dc_Trans_Buf
MOV DPL1, #00Bh
MOVX @DPTR, A
MOV DPS, #000h
MOV DPTR, #dat_d3_dail1
CALL dc_send_d3_pack
LJMP main_0
; -----------------------------------------------------------------------------
main_show_rtc: CALL lcd_rd_ctrl
MOV R2, A
MOV A, #0A0h
CALL lcd_wr_ctrl
MOV DPTR, #X_RTC_Ctrl
MOV A, rtc_cal
ANL A, #03Fh
ORL A, #040h
MOVX @DPTR, A
MOV DPTR, #X_RTC_Hour
MOVX A, @DPTR
ANL A, #03Fh
CALL lcd_hex_byte
MOV A, #':'
CALL lcd_wr_data
MOV DPTR, #X_RTC_Min
MOVX A, @DPTR
ANL A, #07Fh
CALL lcd_hex_byte
MOV DPTR, #X_RTC_Ctrl
MOV A, rtc_cal
ANL A, #03Fh
MOVX @DPTR, A
MOV A, R2
ORL A, #080h
CALL lcd_wr_ctrl
LJMP main_0
m_rtc_time: MOV A, input_buffer_p
CJNE A, #input_buffer+0, m_rtc_time_1
SJMP m_rtc_time_2
m_rtc_time_1: CJNE A, #input_buffer+6, m_rtc_time_3
MOV DPTR, #X_RTC_Ctrl
MOV A, rtc_cal
ANL A, #03Fh
ORL A, #080h
MOVX @DPTR, A
MOV A, #000h
CALL get_byte_inp_buf
ANL A, #03Fh
MOV DPTR, #X_RTC_Hour
MOVX @DPTR, A
MOV A, #002h
CALL get_byte_inp_buf
ANL A, #07Fh
MOV DPTR, #X_RTC_Min
MOVX @DPTR, A
MOV A, #004h
CALL get_byte_inp_buf
ANL A, #07Fh
MOV DPTR, #X_RTC_Sec
MOVX @DPTR, A
MOV DPTR, #X_RTC_Ctrl
MOV A, rtc_cal
ANL A, #03Fh
MOVX @DPTR, A
CALL inp_buf_init
LJMP main_0
m_rtc_time_2: MOV DPTR, #X_RTC_Ctrl
MOV A, rtc_cal
ANL A, #03Fh
ORL A, #040h
MOVX @DPTR, A
MOV DPTR, #X_RTC_Hour
MOVX A, @DPTR
ANL A, #03Fh
CALL put_byte_inp_buf
MOV DPTR, #X_RTC_Min
MOVX A, @DPTR
ANL A, #07Fh
CALL put_byte_inp_buf
MOV DPTR, #X_RTC_Sec
MOVX A, @DPTR
ANL A, #07Fh
CALL put_byte_inp_buf
MOV DPTR, #X_RTC_Ctrl
MOV A, rtc_cal
ANL A, #03Fh
MOVX @DPTR, A
LJMP main_0
m_rtc_time_3: LJMP main_0
m_rtc_date: MOV A, input_buffer_p
CJNE A, #input_buffer+0, m_rtc_date_1
SJMP m_rtc_date_2
m_rtc_date_1: CJNE A, #input_buffer+8, m_rtc_date_3
MOV DPTR, #X_RTC_Ctrl
MOV A, rtc_cal
ANL A, #03Fh
ORL A, #080h
MOVX @DPTR, A
MOV A, #000h
CALL get_byte_inp_buf
ANL A, #03Fh
MOV DPTR, #X_RTC_Year
MOVX @DPTR, A
MOV A, #002h
CALL get_byte_inp_buf
ANL A, #07Fh
MOV DPTR, #X_RTC_Month
MOVX @DPTR, A
MOV A, #004h
CALL get_byte_inp_buf
ANL A, #07Fh
MOV DPTR, #X_RTC_Date
MOVX @DPTR, A
MOV A, #006h
CALL get_byte_inp_buf
ANL A, #07Fh
MOV DPTR, #X_RTC_Day
MOVX @DPTR, A
MOV DPTR, #X_RTC_Ctrl
MOV A, rtc_cal
ANL A, #03Fh
MOVX @DPTR, A
CALL inp_buf_init
LJMP main_0
m_rtc_date_2: MOV DPTR, #X_RTC_Ctrl
MOV A, rtc_cal
ANL A, #03Fh
ORL A, #040h
MOVX @DPTR, A
MOV DPTR, #X_RTC_Year
MOVX A, @DPTR
ANL A, #03Fh
CALL put_byte_inp_buf
MOV DPTR, #X_RTC_Month
MOVX A, @DPTR
ANL A, #07Fh
CALL put_byte_inp_buf
MOV DPTR, #X_RTC_Date
MOVX A, @DPTR
ANL A, #07Fh
CALL put_byte_inp_buf
MOV DPTR, #X_RTC_Day
MOVX A, @DPTR
ANL A, #07Fh
CALL put_byte_inp_buf
MOV DPTR, #X_RTC_Ctrl
MOV A, rtc_cal
ANL A, #03Fh
MOVX @DPTR, A
LJMP main_0
m_rtc_date_3: LJMP main_0
m_rtc_cal: MOV A, input_buffer_p
CJNE A, #input_buffer+0, m_rtc_cal_1
SJMP m_rtc_cal_2
m_rtc_cal_1: CJNE A, #input_buffer+2, m_rtc_cal_3
CLR A
CALL get_byte_inp_buf
ANL A, #03Fh
MOV DPTR, #X_RTC_Ctrl
MOVX @DPTR, A
CALL inp_buf_init
LJMP main_0
m_rtc_cal_2: MOV DPTR, #X_RTC_Ctrl
MOVX A, @DPTR
ANL A, #03Fh
CALL put_byte_inp_buf
LJMP main_0
m_rtc_cal_3: LJMP main_0
m_rtc_go: MOV DPTR, #X_RTC_Ctrl
MOV A, rtc_cal
ANL A, #03Fh
ORL A, #080h
MOVX @DPTR, A
MOV DPTR, #X_RTC_Sec
MOV A, #000h
MOVX @DPTR, A
MOV DPTR, #X_RTC_Ctrl
MOV A, rtc_cal
ANL A, #03Fh
MOVX @DPTR, A
LJMP main_0
m_rtc_stop: MOV DPTR, #X_RTC_Sec
MOV A, #080h
MOVX @DPTR, A
LJMP main_0
; -----------------------------------------------------------------------------
m_set_tei: MOV A, input_buffer_p
CJNE A, #input_buffer+0, m_set_tei_1
SJMP m_set_tei_2
m_set_tei_1: CJNE A, #input_buffer+2, m_set_tei_3
CLR A
CALL get_byte_inp_buf
RL A
ORL A, #001h
MOV dc_d2_tei, A
CALL inp_buf_init
LJMP main_0
m_set_tei_2: MOV A, dc_d2_tei
RR A
ANL A, #07Fh
CALL put_byte_inp_buf
LJMP main_0
m_set_tei_3: LJMP main_0
; -----------------------------------------------------------------------------
main_isdn_reciv:
CALL isdn_d2_reciv
MOV DPS, #000h
MOV R3, dc_reciv_buf_l
MOV DPTR, #X_Dc_Reciv_Buf
MOVX A, @DPTR
MOV R4, A
MOV A, R3
DEC A
MOV DPL, A
MOVX A, @DPTR
MOV R5, A
CALL lcd_rd_ctrl
MOV R2, A
MOV A, #0A2h
CALL lcd_wr_ctrl
MOV A, R3
CALL lcd_hex_byte
MOV A, R4
CALL lcd_hex_byte
MOV A, R5
CALL lcd_hex_byte
MOV A, R2
ORL A, #080h
CALL lcd_wr_ctrl
JMP main_0
; -----------------------------------------------------------------------------
; -----------------------------------------------------------------------------
m_menu_main: MOV DPTR, #txt_main_menu
CALL lcd_status
CALL menu_init
MOV DPS, #000h
MOV DPTR, #m_menu_main
MOV menu_back_h, DPH
MOV menu_back_l, DPL
LJMP main_0
m_menu_crypt: MOV DPTR, #txt_crypt_menu
CALL lcd_status
MOV A, #000h
MOV DPTR, #mnu_main
CALL menu_make
MOV A, #001h
MOV DPTR, #mnu_dsci
CALL menu_make
MOV A, #002h
MOV DPTR, #mnu_mon_off
CALL menu_make
MOV A, #003h
MOV DPTR, #mnu_c_mon_b1
CALL menu_make
MOV A, #004h
MOV DPTR, #mnu_c_mon_b2
CALL menu_make
MOV A, #005h
MOV DPTR, #mnu_c_mon_t_b1
CALL menu_make
MOV A, #006h
MOV DPTR, #mnu_c_mon_t_b2
CALL menu_make
MOV A, #007h
MOV DPTR, #mnu_
CALL menu_make
LJMP main_0
m_menu_setup: MOV DPTR, #txt_setup_menu
CALL lcd_status
MOV A, #000h
MOV DPTR, #mnu_main
CALL menu_make
MOV A, #001h
MOV DPTR, #mnu_set_tei
CALL menu_make
MOV A, #002h
MOV DPTR, #mnu_
CALL menu_make
MOV A, #003h
MOV DPTR, #mnu_
CALL menu_make
MOV A, #004h
MOV DPTR, #mnu_rtc
CALL menu_make
MOV A, #005h
MOV DPTR, #mnu_
CALL menu_make
MOV A, #006h
MOV DPTR, #mnu_hex
CALL menu_make
MOV A, #007h
MOV DPTR, #mnu_bksp
CALL menu_make
MOV DPS, #000h
MOV DPTR, #m_menu_setup
MOV menu_back_h, DPH
MOV menu_back_l, DPL
LJMP main_0
m_menu_mon: MOV DPTR, #txt_mon_menu
CALL lcd_status
MOV A, #000h
MOV DPTR, #mnu_main
CALL menu_make
MOV A, #001h
MOV DPTR, #mnu_dsci
CALL menu_make
MOV A, #002h
MOV DPTR, #mnu_mon_off
CALL menu_make
MOV A, #003h
MOV DPTR, #mnu_mon_b1
CALL menu_make
MOV A, #004h
MOV DPTR, #mnu_mon_b2
CALL menu_make
MOV A, #005h
MOV DPTR, #mnu_mon_t_b1
CALL menu_make
MOV A, #006h
MOV DPTR, #mnu_mon_t_b2
CALL menu_make
MOV A, #007h
MOV DPTR, #mnu_1khz
CALL menu_make
LJMP main_0
m_menu_dc: MOV DPTR, #txt_dc_menu
CALL lcd_status
MOV A, #000h
MOV DPTR, #mnu_main
CALL menu_make
MOV A, #001h
MOV DPTR, #mnu_lsr
CALL menu_make
MOV A, #002h
MOV DPTR, #mnu_dsr
CALL menu_make
MOV A, #003h
MOV DPTR, #mnu_dsci
CALL menu_make
MOV A, #004h
MOV DPTR, #mnu_s0ac
CALL menu_make
MOV A, #005h
MOV DPTR, #mnu_sabme
CALL menu_make
MOV A, #006h
MOV DPTR, #mnu_
CALL menu_make
MOV A, #007h
MOV DPTR, #mnu_
CALL menu_make
LJMP main_0
m_menu_rtc: MOV DPTR, #txt_rtc_menu
CALL lcd_status
MOV A, #000h
MOV DPTR, #mnu_main
CALL menu_make
MOV A, #001h
MOV DPTR, #mnu_rtc_time
CALL menu_make
MOV A, #002h
MOV DPTR, #mnu_rtc_date
CALL menu_make
MOV A, #003h
MOV DPTR, #mnu_rtc_cal
CALL menu_make
MOV A, #004h
MOV DPTR, #mnu_rtc_stop
CALL menu_make
MOV A, #005h
MOV DPTR, #mnu_rtc_go
CALL menu_make
MOV A, #006h
MOV DPTR, #mnu_
CALL menu_make
MOV A, #007h
MOV DPTR, #mnu_bksp
CALL menu_make
LJMP main_0
m_dsci: CALL dsc_init
LJMP main_0
m_bksp: CALL inp_buf_del
LJMP main_0
m_mon_off: CALL dsc_b_off
LJMP main_0
m_mon_b1: CALL dsc_b1_plain
LJMP main_0
m_mon_b2: CALL dsc_b2_plain
LJMP main_0
m_mon_t_b1: CALL dsc_t_b1_plain
LJMP main_0
m_mon_t_b2: CALL dsc_t_b2_plain
LJMP main_0
m_c_mon_b1: CALL dsc_b1_crypt
LJMP main_0
m_c_mon_b2: CALL dsc_b2_crypt
LJMP main_0
m_c_mon_t_b1: CALL dsc_t_b1_crypt
LJMP main_0
m_c_mon_t_b2: CALL dsc_t_b2_crypt
LJMP main_0
m_1khz: MOV P2, #0E0h
MOV R0, #R_DSC_CrIr
MOV R1, #R_DSC_Data
CLR EA
MOV A, #DSCi_strf
MOVX @R0, A
MOV A, #003h
MOVX @R1, A
MOV A, #DSCi_stra
MOVX @R0, A
MOV A, #0A0h
MOVX @R1, A
MOV A, #DSCi_mmr3
MOVX @R0, A
MOV A, #009h
MOVX @R1, A
MOV A, #DSCi_mmr2
MOVX @R0, A
MOV A, #00Ah
MOVX @R1, A
SETB EA
LJMP main_0
m_sabme: CALL dc_sabme
LJMP main_0
m_s0ac: CALL dc_activate
LJMP main_0
MOV P2, #0E0h
MOV R0, #R_DSC_CrIr
MOV R1, #R_DSC_Data
CLR EA
MOV A, #DSCi_lmr1
MOVX @R0, A
MOV A, #050h
MOVX @R1, A
SETB EA
LJMP main_0
m_lsr: MOV P2, #0E0h
MOV R0, #R_DSC_CrIr
MOV R1, #R_DSC_Data
CLR EA
MOV A, #DSCi_lsr
MOVX @R0, A
MOVX A, @R1
SETB EA
MOV R3, A
CALL lcd_rd_ctrl
MOV R2, A
MOV A, #0A2h
CALL lcd_wr_ctrl
MOV A, R3
CALL lcd_hex_byte
MOV A, R2
ORL A, #080h
CALL lcd_wr_ctrl
LJMP main_0
m_dsr: MOV DPTR, #X_DSC_dsr1
MOVX A, @DPTR
MOV R3, A
MOV DPTR, #X_DSC_dsr2
MOVX A, @DPTR
MOV R4, A
MOV DPTR, #X_DSC_der
MOVX A, @DPTR
MOV R5, A
CALL lcd_rd_ctrl
MOV R2, A
MOV A, #0A2h
CALL lcd_wr_ctrl
MOV A, R3
CALL lcd_hex_byte
MOV A, R4
CALL lcd_hex_byte
MOV A, R5
CALL lcd_hex_byte
MOV A, R2
ORL A, #080h
CALL lcd_wr_ctrl
LJMP main_0
; -----------------------------------------------------------------------------
m_hex_menu: MOV DPTR, #txt_hex_menu
CALL lcd_status
MOV A, #000h
MOV DPTR, #mnu_hex_back
CALL menu_make
MOV A, #001h
MOV DPTR, #mnu_hex_a
CALL menu_make
MOV A, #002h
MOV DPTR, #mnu_hex_b
CALL menu_make
MOV A, #003h
MOV DPTR, #mnu_hex_c
CALL menu_make
MOV A, #004h
MOV DPTR, #mnu_hex_d
CALL menu_make
MOV A, #005h
MOV DPTR, #mnu_hex_e
CALL menu_make
MOV A, #006h
MOV DPTR, #mnu_hex_f
CALL menu_make
MOV A, #007h
MOV DPTR, #mnu_bksp
CALL menu_make
LJMP main_0
m_hex_a: MOV A, #'A'
CALL inp_buf_add
LJMP main_0
m_hex_b: MOV A, #'B'
CALL inp_buf_add
LJMP main_0
m_hex_c: MOV A, #'C'
CALL inp_buf_add
LJMP main_0
m_hex_d: MOV A, #'D'
CALL inp_buf_add
LJMP main_0
m_hex_e: MOV A, #'E'
CALL inp_buf_add
LJMP main_0
m_hex_f: MOV A, #'F'
CALL inp_buf_add
LJMP main_0
m_hex_back: MOV DPS, #000h
MOV DPH, menu_back_h
MOV DPL, menu_back_l
CLR A
JMP @A+DPTR
; -----------------------------------------------------------------------------
; -----------------------------------------------------------------------------
inp_buf_init: MOV R0, #input_buffer
MOV R7, #input_buf_max
MOV A, #080h
CALL lcd_wr_ctrl
inp_buf_init_1: CLR A
MOV @R0, A
INC R0
MOV A, #020h
CALL lcd_wr_data
DJNZ R7, inp_buf_init_1
MOV A, #0FFh
CALL lcd_wr_data
MOV R0, #input_buffer
MOV input_buffer_p, R0
MOV A, #080h
CALL lcd_wr_ctrl
RET
inp_buf_add: MOV R2, A
MOV R0, input_buffer_p
MOV A, R0
CLR C
SUBB A, #input_buffer
CLR C
SUBB A, #input_buf_max
JNC inp_buf_add_1
MOV A, R2
MOV @R0, A
INC R0
MOV input_buffer_p, R0
CALL lcd_wr_data
inp_buf_add_1: RET
inp_buf_del: MOV R0, input_buffer_p
MOV A, R0
CLR C
SUBB A, #input_buffer
JC inp_buf_del_1
JZ inp_buf_del_1
DEC R0
CLR A
MOV @R0, A
MOV input_buffer_p, R0
MOV A, #010h
CALL lcd_wr_ctrl
MOV A, #020h
CALL lcd_wr_data
MOV A, #010h
CALL lcd_wr_ctrl
inp_buf_del_1: RET
; -----------------------------------------------------------------------------
get_byte_inp_buf: ADD A, #input_buffer
MOV R0, A
MOV A, @R0
CALL get_hex_nib
SWAP A
MOV B, A
INC R0
MOV A, @R0
CALL get_hex_nib
ORL A, B
RET
get_hex_nib: MOV R2, A
ANL A, #0F0h
CJNE A, #030h, get_hex_nib_1
SJMP get_hex_nib_2
get_hex_nib_1: CJNE A, #040h, get_hex_nib_3
MOV A, R2
ANL A, #00Fh
CLR C
SUBB A, #007h
JNC get_hex_nib_3
MOV A, R2
ADD A, #009h
ANL A, #00Fh
RET
get_hex_nib_2: MOV A, R2
ANL A, #00Fh
CLR C
SUBB A, #00Ah
JNC get_hex_nib_3
MOV A, R2
ANL A, #00Fh
RET
get_hex_nib_3: CLR A
RET
put_byte_inp_buf: PUSH ACC
SWAP A
ANL A, #00Fh
CLR C
SUBB A, #00Ah
JC put_byte_inp_buf_1
ADD A, #007h
put_byte_inp_buf_1: ADD A, #03Ah
CALL inp_buf_add
POP ACC
ANL A, #00Fh
CLR C
SUBB A, #00Ah
JC put_byte_inp_buf_2
ADD A, #007h
put_byte_inp_buf_2: ADD A, #03Ah
CALL inp_buf_add
RET
; -----------------------------------------------------------------------------
menu_init: MOV A, #000h
MOV DPTR, #mnu_
CALL menu_make
MOV A, #001h
MOV DPTR, #mnu_crypt
CALL menu_make
MOV A, #002h
MOV DPTR, #mnu_setup
CALL menu_make
MOV A, #003h
MOV DPTR, #mnu_mon
CALL menu_make
MOV A, #004h
MOV DPTR, #mnu_dc
CALL menu_make
MOV A, #005h
MOV DPTR, #mnu_
CALL menu_make
MOV A, #006h
MOV DPTR, #mnu_
CALL menu_make
MOV A, #007h
MOV DPTR, #mnu_bksp
CALL menu_make
RET
menu_make: ANL A, #007h
MOV R3, A
CALL lcd_rd_ctrl
MOV R2, A
MOV A, R3
MOV B, #005h
MUL AB
ADD A, #0C0h
CALL lcd_wr_ctrl
MOV R7, #004h
menu_make_1: CLR A
MOVC A, @A+DPTR
CALL lcd_wr_data
INC DPTR
DJNZ R7, menu_make_1
MOV A, R3
RL A
ADD A, #menu_start_adr
MOV R0, A
CLR A
MOVC A, @A+DPTR
MOV @R0, A
INC DPTR
INC R0
CLR A
MOVC A, @A+DPTR
MOV @R0, A
INC DPTR
MOV A, R2
ORL A, #080h
CALL lcd_wr_ctrl
RET
m_nop: LJMP main_0
; -----------------------------------------------------------------------------
cpu_init: MOV P1, #0FFh
MOV P2, #0E0h
MOV P3, #0FFh
MOV A, CKCON ; Speed for WatchDogTimer
ANL A, #03Fh
ORL A, #080h
MOV CKCON, A
MOV A, CKCON ; Speed for MOVX
ANL A, #0F8h
ORL A, #004h
MOV CKCON, A
MOV DPS, #000h
CLR IE0 ; Interrupt Enable
SETB IT0
CLR IE1
SETB IT1
MOV IE, #085h
MOV EIE, #010h
MOV WDCON, #000h
MOV A, #003h ; TEI = 1
MOV dc_d2_tei, A
MOV A, #001h ; Call Ref. = 1
MOV dc_d3_cr, A
MOV rtc_cal, #020h
MOV DPTR, #X_RTC_Ctrl
MOV A, rtc_cal ; RTC Calibrate
ANL A, #03Fh
MOVX @DPTR, A
RET
; -----------------------------------------------------------------------------
dsc_init: MOV P2, #0E0h
MOV R0, #R_DSC_CrIr
MOV R1, #R_DSC_Data
CLR EA
MOV A, #DSCi_init
MOVX @R0, A
MOV A, #000h
MOVX @R1, A
MOV A, #DSCi_efcr
MOVX @R0, A
MOV A, #001h
MOVX @R1, A
MOV A, #DSCi_dmr4
MOVX @R0, A
MOV A, #00Fh
MOVX @R1, A
MOV A, #DSCi_init
MOVX @R0, A
MOV A, #001h
MOVX @R1, A
MOV A, #DSCi_init2
MOVX @R0, A
MOV A, #008h
MOVX @R1, A
MOV A, #DSCi_init2
MOVX @R0, A
MOV A, #008h
MOVX @R1, A
MOV A, #DSCi_lmr1
MOVX @R0, A
MOV A, #040h
MOVX @R1, A
MOV A, #DSCi_lmr2
MOVX @R0, A
MOV A, #020h
MOVX @R1, A
MOV A, #DSCi_ppcr2
MOVX @R0, A
MOV A, #001h
MOVX @R1, A
MOV A, #DSCi_mcr1
MOVX @R0, A
MOV A, #000h
MOVX @R1, A
MOV A, #DSCi_mcr2
MOVX @R0, A
MOV A, #000h
MOVX @R1, A
MOV A, #DSCi_mcr3
MOVX @R0, A
MOV A, #000h
MOVX @R1, A
MOV A, #DSCi_mcr4
MOVX @R0, A
MOV A, #000h
MOVX @R1, A
MOV A, #DSCi_mmr3
MOVX @R0, A
MOV A, #002h
MOVX @R1, A
MOV A, #DSCi_mmr2
MOVX @R0, A
MOV A, #000h
MOVX @R1, A
MOV A, #DSCi_mmr1
MOVX @R0, A
MOV A, #001h
MOVX @R1, A
MOV A, #DSCi_dmr1
MOVX @R0, A
MOV A, #07Bh
MOVX @R1, A
MOV A, #DSCi_dmr2
MOVX @R0, A
MOV A, #0FFh
MOVX @R1, A
MOV A, #DSCi_dmr3
MOVX @R0, A
MOV A, #042h
MOVX @R1, A
MOV A, #DSCi_drlr
MOVX @R0, A
MOV A, #dc_buffer_max
MOVX @R1, A
MOV A, #000h
MOVX @R1, A
MOV A, #DSCi_frar ; Adr1= $00, TEI
MOVX @R0, A ; Adr2= $00, $FF
MOV A, #000h ; Adr3= $FE, $FF
MOVX @R1, A ; Adr4=($FE, $FF)
MOVX @R1, A
MOV A, #0FEh
MOVX @R1, A
MOV A, #DSCi_srar
MOVX @R0, A
MOV A, dc_d2_tei
MOVX @R1, A
MOV A, #0FFh
MOVX @R1, A
MOVX @R1, A
MOV A, #DSCi_frar4
MOVX @R0, A
MOV A, #0FEh
MOVX @R1, A
MOV A, #DSCi_srar4
MOVX @R0, A
MOV A, #0FFh
MOVX @R1, A
MOV A, #DSCi_tar
MOVX @R0, A
MOV A, #000h
MOVX @R1, A
MOV A, #003h
MOVX @R1, A
SETB EA
RET
; -----------------------------------------------------------------------------
dsc_b_off: MOV P2, #0E0h
MOV R0, #R_DSC_CrIr
MOV R1, #R_DSC_Data
CLR EA
MOV A, #DSCi_mcr1
MOVX @R0, A
MOV A, #000h
MOVX @R1, A
MOV A, #DSCi_mcr2
MOVX @R0, A
MOV A, #000h
MOVX @R1, A
MOV A, #DSCi_lmr1
MOVX @R0, A
MOV A, #040h
MOVX @R1, A
SETB EA
RET
dsc_b1_plain: MOV P2, #0E0h
MOV R0, #R_DSC_CrIr
MOV R1, #R_DSC_Data
CLR EA
MOV A, #DSCi_mcr1
MOVX @R0, A
MOV A, #013h
MOVX @R1, A
MOV A, #DSCi_mcr2
MOVX @R0, A
MOV A, #000h
MOVX @R1, A
MOV A, #DSCi_lmr1
MOVX @R0, A
MOV A, #040h
MOVX @R1, A
SETB EA
RET
dsc_b2_plain: MOV P2, #0E0h
MOV R0, #R_DSC_CrIr
MOV R1, #R_DSC_Data
CLR EA
MOV A, #DSCi_mcr1
MOVX @R0, A
MOV A, #023h
MOVX @R1, A
MOV A, #DSCi_mcr2
MOVX @R0, A
MOV A, #000h
MOVX @R1, A
MOV A, #DSCi_lmr1
MOVX @R0, A
MOV A, #040h
MOVX @R1, A
SETB EA
RET
dsc_t_b1_plain: MOV P2, #0E0h
MOV R0, #R_DSC_CrIr
MOV R1, #R_DSC_Data
CLR EA
MOV A, #DSCi_mcr1
MOVX @R0, A
MOV A, #013h
MOVX @R1, A
MOV A, #DSCi_mcr2
MOVX @R0, A
MOV A, #000h
MOVX @R1, A
MOV A, #DSCi_lmr1
MOVX @R0, A
MOV A, #041h
MOVX @R1, A
SETB EA
RET
dsc_t_b2_plain: MOV P2, #0E0h
MOV R0, #R_DSC_CrIr
MOV R1, #R_DSC_Data
CLR EA
MOV A, #DSCi_mcr1
MOVX @R0, A
MOV A, #023h
MOVX @R1, A
MOV A, #DSCi_mcr2
MOVX @R0, A
MOV A, #000h
MOVX @R1, A
MOV A, #DSCi_lmr1
MOVX @R0, A
MOV A, #042h
MOVX @R1, A
SETB EA
RET
dsc_b1_crypt: MOV P2, #0E0h
MOV R0, #R_DSC_CrIr
MOV R1, #R_DSC_Data
CLR EA
MOV A, #DSCi_mcr1
MOVX @R0, A
MOV A, #016h
MOVX @R1, A
MOV A, #DSCi_mcr2
MOVX @R0, A
MOV A, #073h
MOVX @R1, A
MOV A, #DSCi_mcr3
MOVX @R0, A
MOV A, #082h
MOVX @R1, A
MOV A, #DSCi_lmr1
MOVX @R0, A
MOV A, #040h
MOVX @R1, A
SETB EA
RET
dsc_b2_crypt: MOV P2, #0E0h
MOV R0, #R_DSC_CrIr
MOV R1, #R_DSC_Data
CLR EA
MOV A, #DSCi_mcr1
MOVX @R0, A
MOV A, #026h
MOVX @R1, A
MOV A, #DSCi_mcr2
MOVX @R0, A
MOV A, #073h
MOVX @R1, A
MOV A, #DSCi_lmr1
MOVX @R0, A
MOV A, #040h
MOVX @R1, A
SETB EA
RET
dsc_t_b1_crypt: MOV P2, #0E0h
MOV R0, #R_DSC_CrIr
MOV R1, #R_DSC_Data
CLR EA
MOV A, #DSCi_mcr1
MOVX @R0, A
MOV A, #016h
MOVX @R1, A
MOV A, #DSCi_mcr2
MOVX @R0, A
MOV A, #073h
MOVX @R1, A
MOV A, #DSCi_lmr1
MOVX @R0, A
MOV A, #041h
MOVX @R1, A
SETB EA
RET
dsc_t_b2_crypt: MOV P2, #0E0h
MOV R0, #R_DSC_CrIr
MOV R1, #R_DSC_Data
CLR EA
MOV A, #DSCi_mcr1
MOVX @R0, A
MOV A, #026h
MOVX @R1, A
MOV A, #DSCi_mcr2
MOVX @R0, A
MOV A, #073h
MOVX @R1, A
MOV A, #DSCi_lmr1
MOVX @R0, A
MOV A, #042h
MOVX @R1, A
SETB EA
RET
; -----------------------------------------------------------------------------
lcd_status: CALL lcd_rd_ctrl
MOV R2, A
MOV A, #095h
CALL lcd_wr_ctrl
CALL lcd_str
MOV A, R2
ORL A, #080h
CALL lcd_wr_ctrl
RET
lcd_init: MOV A, #038h
CALL lcd_wr_ctrl
MOV A, #038h
CALL lcd_wr_ctrl
MOV A, #038h
CALL lcd_wr_ctrl
MOV A, #00Eh
CALL lcd_wr_ctrl
MOV A, #006h
CALL lcd_wr_ctrl
MOV A, #001h
CALL lcd_wr_ctrl
RET
lcd_str: CLR A
MOVC A, @A+DPTR
JZ lcd_str_1
CALL lcd_wr_data
INC DPTR
JMP lcd_str
lcd_str_1: RET
lcd_str_c: CLR A
MOVC A, @A+DPTR
JZ lcd_str_c_1
JB ACC.7, lcd_str_c_2
CALL lcd_wr_data
JMP lcd_str_c_3
lcd_str_c_2: CALL lcd_wr_ctrl
lcd_str_c_3: INC DPTR
JMP lcd_str
lcd_str_c_1: RET
lcd_hex_byte: PUSH ACC
SWAP A
ANL A, #00Fh
CLR C
SUBB A, #00Ah
JC lcd_hex_byte_1
ADD A, #007h
lcd_hex_byte_1: ADD A, #03Ah
CALL lcd_wr_data
POP ACC
ANL A, #00Fh
CLR C
SUBB A, #00Ah
JC lcd_hex_byte_2
ADD A, #007h
lcd_hex_byte_2: ADD A, #03Ah
CALL lcd_wr_data
RET
lcd_wr_ctrl: PUSH DPL
PUSH DPH
CALL lcd_rd_bsy
MOV DPTR, #X_LCD_Ctrl
MOVX @DPTR, A
POP DPH
POP DPL
RET
lcd_wr_data: PUSH DPL
PUSH DPH
CALL lcd_rd_bsy
MOV DPTR, #X_LCD_Data
MOVX @DPTR, A
POP DPH
POP DPL
RET
lcd_rd_ctrl: PUSH DPL
PUSH DPH
CALL lcd_rd_bsy
MOV DPTR, #X_LCD_Ctrl
MOVX A, @DPTR
POP DPH
POP DPL
RET
lcd_rd_data: PUSH DPL
PUSH DPH
CALL lcd_rd_bsy
MOV DPTR, #X_LCD_Data
MOVX A, @DPTR
POP DPH
POP DPL
RET
lcd_rd_bsy: PUSH ACC
MOV DPTR, #X_LCD_Ctrl
lcd_rd_bsy_1: MOVX A, @DPTR
JB ACC.7, lcd_rd_bsy_1
POP ACC
RET
; -----------------------------------------------------------------------------
; -----------------------------------------------------------------------------
dc_send_d3_byte: MOV DPS, #001h
MOV DPTR, #X_Dc_Trans_Buf
MOV DPL1, #007
MOVX @DPTR, A
MOV A, #001h
SJMP dc_send_d3
dc_send_d3_pack: MOV DPS, #000h
CLR A
MOVC A, @A+DPTR
MOV R6, A
DEC A
MOV R7, A
INC DPTR
INC DPS
MOV DPTR, #X_Dc_Trans_Buf
MOV DPL1, #007h
INC DPS
dc_send_d3_pack_1: CLR A
MOVC A, @A+DPTR
INC DPTR
INC DPS
MOVX @DPTR, A
INC DPTR
INC DPS
DJNZ R7, dc_send_d3_pack_1
MOV A, R6
dc_send_d3: ADD A, #007h
MOV dc_trans_buf_l, A
MOV DPS, #000h
MOV DPTR, #X_Dc_Trans_Buf
MOV A, #000h ; SAPI
MOVX @DPTR, A
INC DPTR
MOV A, dc_d2_tei ; TEI
MOVX @DPTR, A
INC DPTR
MOV A, dc_d2_ns ; N(S)
MOVX @DPTR, A
INC DPTR
MOV A, dc_d2_nr ; N(R)
MOVX @DPTR, A
INC DPTR
MOV A, #008h ; Protokoll Diskrimin.
MOVX @DPTR, A
INC DPTR
MOV A, #001h ; Call Reference 1
MOVX @DPTR, A
INC DPTR
MOV A, dc_d3_cr ; Call Reference 2
MOVX @DPTR, A
INC dc_d2_ns
INC dc_d2_ns
; -----------------------------------------------------------------------------
dc_send: MOV P2, #0E0h
MOV R0, #R_DSC_CrIr
MOV R1, #R_DSC_Data
MOV DPS, #000h
MOV DPTR, #X_DSC_dsr2
MOVX A, @DPTR
JNB ACC.4, dc_send_err
CLR EA
MOV A, #DSCi_lsr
MOVX @R0, A
MOVX A, @R1
SETB EA
ANL A, #007h
CJNE A, #005h, dc_send_err
CLR EA
MOV DPS, #000h
MOV DPTR, #X_DSC_DCB
INC DPS
MOV DPTR, #X_Dc_Trans_buf
MOV A, dc_trans_buf_l
CLR C
SUBB A, #00Eh
JC dc_send_2
MOV R7, #00Eh
SJMP dc_send_1
dc_send_2: MOV R7, dc_trans_buf_l
dc_send_1: MOVX A, @DPTR
INC DPTR
INC DPS
MOVX @DPTR, A
INC DPS
DJNZ R7, dc_send_1
MOV A, DPL1
MOV dc_trans_buf_p, A
MOV A, #DSCi_dtcr
MOVX @R0, A
MOV A, dc_trans_buf_l
MOVX @R1, A
CLR A
MOVX @R1, A
SETB EA
CLR A
RET
dc_send_err: MOV A, #0FFh
RET
; -----------------------------------------------------------------------------
dc_activate: MOV P2, #0E0h
MOV R0, #R_DSC_CrIr
MOV R1, #R_DSC_Data
CLR EA
MOV A, #DSCi_lmr1
MOVX @R0, A
MOV A, #050h
MOVX @R1, A
SETB EA
RET
dc_sabme: MOV DPS, #000h
MOV DPTR, #X_Dc_Trans_buf
MOV A, #003h
MOV dc_trans_buf_l, A
MOV A, #000h
MOVX @DPTR, A
INC DPTR
MOV A, dc_d2_tei
MOVX @DPTR, A
INC DPTR
MOV A, #07Fh
MOVX @DPTR, A
INC DPTR
CALL dc_send
MOV dc_d2_ns, #000h
MOV dc_d2_nr, #000h
RET
; -----------------------------------------------------------------------------
isdn_d2_reciv: MOV dc_d2_rec_typ, #000h
MOV DPS, #000h
MOV DPTR, #X_Dc_Reciv_Buf
MOVX A, @DPTR ; SAPI
MOV C, ACC.1 ; C/R Bit
MOV dc_d2_rec_typ.2, C
ANL A, #0FDh
JZ isdn_d2_reciv_1
SETB dc_d2_rec_typ.1
isdn_d2_reciv_1: INC DPTR
MOVX A, @DPTR ; TEI
CJNE A, #0FFh, isdn_d2_reciv_2
SETB dc_d2_rec_typ.0
isdn_d2_reciv_2: INC DPTR
MOVX A, @DPTR ; N(S)
MOV C, ACC.0 ; Info = 0
MOV dc_d2_rec_typ.3, C
MOV C, ACC.1 ; RR/RNR/REJ = 0
MOV dc_d2_rec_typ.4, C
MOV A, dc_d2_rec_typ
ANL A, #01Fh
MOV B, #003h
MUL AB
MOV DPTR, #isdn_d2_reciv_tab
JMP @A+DPTR
isdn_d2_reciv_tab: LJMP isdn_d2_get_d3 ; 000,TEI , C/R=0, Info
LJMP isdn_d2_ignor ; 000,0FF , C/R=0, Info
LJMP isdn_d2_ignor ; 0Fx,TEI , C/R=0, Info
LJMP isdn_d2_ignor ; 0Fx,0FF , C/R=0, Info
LJMP isdn_d2_get_d3 ; 000,TEI , C/R=1, Info
LJMP isdn_d2_ignor ; 000,0FF , C/R=1, Info
LJMP isdn_d2_ignor ; 0Fx,TEI , C/R=1, Info
LJMP isdn_d2_ignor ; 0Fx,0FF , C/R=1, Info
LJMP isdn_d2_ignor ; 000,TEI , C/R=0, Rxx
LJMP isdn_d2_ignor ; 000,0FF , C/R=0, Rxx
LJMP isdn_d2_ignor ; 0Fx,TEI , C/R=0, Rxx
LJMP isdn_d2_ignor ; 0Fx,0FF , C/R=0, Rxx
LJMP isdn_d2_rr ; 000,TEI , C/R=1, Rxx
LJMP isdn_d2_ignor ; 000,0FF , C/R=1, Rxx
LJMP isdn_d2_ignor ; 0Fx,TEI , C/R=1, Rxx
LJMP isdn_d2_ignor ; 0Fx,0FF , C/R=1, Rxx
LJMP isdn_d2_get_d3 ; 000,TEI , C/R=0, Info
LJMP isdn_d2_ignor ; 000,0FF , C/R=0, Info
LJMP isdn_d2_ignor ; 0Fx,TEI , C/R=0, Info
LJMP isdn_d2_ignor ; 0Fx,0FF , C/R=0, Info
LJMP isdn_d2_get_d3 ; 000,TEI , C/R=1, Info
LJMP isdn_d2_ignor ; 000,0FF , C/R=1, Info
LJMP isdn_d2_ignor ; 0Fx,TEI , C/R=1, Info
LJMP isdn_d2_ignor ; 0Fx,0FF , C/R=1, Info
LJMP isdn_d2_ignor ; 000,TEI , C/R=0, Ux
LJMP isdn_d2_ignor ; 000,0FF , C/R=0, Ux
LJMP isdn_d2_ignor ; 0Fx,TEI , C/R=0, Ux
LJMP isdn_d2_ignor ; 0Fx,0FF , C/R=0, Ux
LJMP isdn_d2_ignor ; 000,TEI , C/R=1, Ux
LJMP isdn_d2_get_d3_u ; 000,0FF , C/R=1, Ux
LJMP isdn_d2_ignor ; 0Fx,TEI , C/R=1, Ux
LJMP isdn_d2_ignor ; 0Fx,0FF , C/R=1, Ux
isdn_d2_ignor: RET
isdn_d2_get_d3:
INC dc_d2_nr
INC dc_d2_nr
CALL isdn_d3_reciv
isdn_d2_rr:
MOV DPS, #000h
MOV DPTR, #X_Dc_Trans_Buf
MOV A, #002h ; SAPI
MOVX @DPTR, A
INC DPTR
MOV A, dc_d2_tei ; TEI
MOVX @DPTR, A
INC DPTR
MOV A, #001h ; RR
MOVX @DPTR, A
INC DPTR
MOV A, dc_d2_nr ; N(R)
ORL A, #001h
MOVX @DPTR, A
MOV dc_trans_buf_l, #004h
CALL dc_send
RET
isdn_d2_get_d3_u:
MOV DPS, #001h
MOV DPTR, #X_Dc_Reciv_Buf
MOV DPL1, #006h
MOVX A, @DPTR
CJNE A, #005h, isdn_d2_get_d3_u_1
JB dc_status.3, isdn_d2_get_d3_u_1
JB dc_status.4, isdn_d2_get_d3_u_1
JB dc_status.5, isdn_d2_get_d3_u_1
MOV DPL1, #005h
MOVX A, @DPTR
ORL A, #080h
MOV dc_d3_cr, A
CALL isdn_d3_reciv_b_nr
SETB dc_status.3
CALL dc_sabme
MOV A, #002h
CALL wait_period
MOV A, #001h
CALL dc_send_d3_byte
isdn_d2_get_d3_u_1:
RET
isdn_d3_reciv:
MOV DPS, #000h
MOV DPTR, #X_Dc_Reciv_Buf
MOV DPL, #007h
MOVX A, @DPTR
ANL A, #07Fh
MOV B, #003h
MUL AB
MOV R0, A
MOV DPS, #000h
MOV DPTR, #isdn_d3_reciv_tab
MOV A, DPL
ADD A, R0
MOV DPL, A
MOV A, DPH
ADDC A, B
MOV DPH, A
CLR A
JMP @A+DPTR
isdn_d3_reciv_tab: LJMP isdn_d3_reciv_ignor ; 00 Esccape Code
LJMP isdn_d3_reciv_ignor ; 01 Alerting
LJMP isdn_d3_reciv_ignor ; 02 Call Progress
LJMP isdn_d3_reciv_ignor ; 03 Progress
LJMP isdn_d3_reciv_illegal ; 04
LJMP isdn_d3_reciv_setup ; 05 Setup
LJMP isdn_d3_reciv_illegal ; 06
LJMP isdn_d3_reciv_ignor ; 07 Connect
LJMP isdn_d3_reciv_illegal ; 08
LJMP isdn_d3_reciv_illegal ; 09
LJMP isdn_d3_reciv_illegal ; 0A
LJMP isdn_d3_reciv_illegal ; 0B
LJMP isdn_d3_reciv_illegal ; 0C
LJMP isdn_d3_reciv_setup ; 0D Setup Ack
LJMP isdn_d3_reciv_illegal ; 0E
LJMP isdn_d3_reciv_ignor ; 0F Connect Ack
LJMP isdn_d3_reciv_illegal ; 10
LJMP isdn_d3_reciv_illegal ; 11
LJMP isdn_d3_reciv_illegal ; 12
LJMP isdn_d3_reciv_illegal ; 13
LJMP isdn_d3_reciv_illegal ; 14
LJMP isdn_d3_reciv_illegal ; 15
LJMP isdn_d3_reciv_illegal ; 16
LJMP isdn_d3_reciv_illegal ; 17
LJMP isdn_d3_reciv_illegal ; 18
LJMP isdn_d3_reciv_illegal ; 19
LJMP isdn_d3_reciv_illegal ; 1A
LJMP isdn_d3_reciv_illegal ; 1B
LJMP isdn_d3_reciv_illegal ; 1C
LJMP isdn_d3_reciv_illegal ; 1D
LJMP isdn_d3_reciv_illegal ; 1E
LJMP isdn_d3_reciv_illegal ; 1F
LJMP isdn_d3_reciv_ignor ; 20 User Info
LJMP isdn_d3_reciv_ignor ; 21 Suspend Rej
LJMP isdn_d3_reciv_ignor ; 22 Resume Rej
LJMP isdn_d3_reciv_illegal ; 23
LJMP isdn_d3_reciv_ignor ; 24 Hold
LJMP isdn_d3_reciv_ignor ; 25 Suspend
LJMP isdn_d3_reciv_ignor ; 26 Resume
LJMP isdn_d3_reciv_illegal ; 27
LJMP isdn_d3_reciv_ignor ; 28 Hold Ack
LJMP isdn_d3_reciv_illegal ; 29
LJMP isdn_d3_reciv_illegal ; 2A
LJMP isdn_d3_reciv_illegal ; 2B
LJMP isdn_d3_reciv_illegal ; 2C
LJMP isdn_d3_reciv_ignor ; 2D Suspend Ack
LJMP isdn_d3_reciv_ignor ; 2E Resume Ack
LJMP isdn_d3_reciv_illegal ; 2F
LJMP isdn_d3_reciv_ignor ; 30 Hold Rej
LJMP isdn_d3_reciv_ignor ; 31 Retrieve
LJMP isdn_d3_reciv_illegal ; 32
LJMP isdn_d3_reciv_ignor ; 33 Retrieve Ack
LJMP isdn_d3_reciv_illegal ; 34
LJMP isdn_d3_reciv_illegal ; 35
LJMP isdn_d3_reciv_illegal ; 36
LJMP isdn_d3_reciv_ignor ; 37 Retrieve Rej
LJMP isdn_d3_reciv_illegal ; 38
LJMP isdn_d3_reciv_illegal ; 39
LJMP isdn_d3_reciv_illegal ; 3A
LJMP isdn_d3_reciv_illegal ; 3B
LJMP isdn_d3_reciv_illegal ; 3C
LJMP isdn_d3_reciv_illegal ; 3D
LJMP isdn_d3_reciv_illegal ; 3E
LJMP isdn_d3_reciv_illegal ; 3F
LJMP isdn_d3_reciv_illegal ; 40
LJMP isdn_d3_reciv_illegal ; 41
LJMP isdn_d3_reciv_illegal ; 42
LJMP isdn_d3_reciv_illegal ; 43
LJMP isdn_d3_reciv_illegal ; 44
LJMP isdn_d3_reciv_ignor ; 45 Disconnect
LJMP isdn_d3_reciv_ignor ; 46 Restart
LJMP isdn_d3_reciv_illegal ; 47
LJMP isdn_d3_reciv_illegal ; 48
LJMP isdn_d3_reciv_illegal ; 49
LJMP isdn_d3_reciv_illegal ; 4A
LJMP isdn_d3_reciv_illegal ; 4B
LJMP isdn_d3_reciv_illegal ; 4C
LJMP isdn_d3_reciv_release ; 4D Release
LJMP isdn_d3_reciv_ignor ; 4E Restart Ack
LJMP isdn_d3_reciv_illegal ; 4F
LJMP isdn_d3_reciv_illegal ; 50
LJMP isdn_d3_reciv_illegal ; 51
LJMP isdn_d3_reciv_illegal ; 52
LJMP isdn_d3_reciv_illegal ; 53
LJMP isdn_d3_reciv_illegal ; 54
LJMP isdn_d3_reciv_illegal ; 55
LJMP isdn_d3_reciv_illegal ; 56
LJMP isdn_d3_reciv_illegal ; 57
LJMP isdn_d3_reciv_illegal ; 58
LJMP isdn_d3_reciv_illegal ; 59
LJMP isdn_d3_reciv_release ; 5A Release Compl
LJMP isdn_d3_reciv_illegal ; 5B
LJMP isdn_d3_reciv_illegal ; 5C
LJMP isdn_d3_reciv_illegal ; 5D
LJMP isdn_d3_reciv_illegal ; 5E
LJMP isdn_d3_reciv_illegal ; 5F
LJMP isdn_d3_reciv_ignor ; 60 Segment
LJMP isdn_d3_reciv_illegal ; 61
LJMP isdn_d3_reciv_ignor ; 62 Facility
LJMP isdn_d3_reciv_illegal ; 63
LJMP isdn_d3_reciv_ignor ; 64 Register
LJMP isdn_d3_reciv_illegal ; 65
LJMP isdn_d3_reciv_illegal ; 66
LJMP isdn_d3_reciv_illegal ; 67
LJMP isdn_d3_reciv_illegal ; 68
LJMP isdn_d3_reciv_illegal ; 69
LJMP isdn_d3_reciv_illegal ; 6A
LJMP isdn_d3_reciv_illegal ; 6B
LJMP isdn_d3_reciv_illegal ; 6C
LJMP isdn_d3_reciv_illegal ; 6D
LJMP isdn_d3_reciv_ignor ; 6E Notify
LJMP isdn_d3_reciv_illegal ; 6F
LJMP isdn_d3_reciv_illegal ; 70
LJMP isdn_d3_reciv_illegal ; 71
LJMP isdn_d3_reciv_illegal ; 72
LJMP isdn_d3_reciv_illegal ; 73
LJMP isdn_d3_reciv_illegal ; 74
LJMP isdn_d3_reciv_ignor ; 75 Status Enquiry
LJMP isdn_d3_reciv_illegal ; 76
LJMP isdn_d3_reciv_illegal ; 77
LJMP isdn_d3_reciv_illegal ; 78
LJMP isdn_d3_reciv_ignor ; 79 Congestion Control
LJMP isdn_d3_reciv_illegal ; 7A
LJMP isdn_d3_reciv_ignor ; 7B Information
LJMP isdn_d3_reciv_illegal ; 7C
LJMP isdn_d3_reciv_ignor ; 7D Status
LJMP isdn_d3_reciv_illegal ; 7E
LJMP isdn_d3_reciv_illegal ; 7F
isdn_d3_reciv_illegal: RET
isdn_d3_reciv_ignor: RET
isdn_d3_reciv_release:
CLR dc_status.3
CLR dc_status.4
CLR dc_status.5
MOV dc_d3_cr, #001h
CALL dsc_b_off
CALL lcd_rd_ctrl
MOV R2, A
MOV A, #0A0h
CALL lcd_wr_ctrl
MOV A, #'_'
CALL lcd_wr_data
MOV A, R2
ORL A, #080h
CALL lcd_wr_ctrl
RET
isdn_d3_reciv_setup:
CALL isdn_d3_reciv_b_nr
RET
isdn_d3_reciv_b_nr: MOV DPS, #000h
MOV DPTR, #X_Dc_Reciv_Buf
MOV DPL, #002h
MOVX A, @DPTR
ANL A, #0EFh
CJNE A, #003h, isdn_d3_reciv_b_nr_1
MOV DPL, #006h
SJMP isdn_d3_reciv_b_nr_2
isdn_d3_reciv_b_nr_1: JB ACC.0, isdn_d3_reciv_b_nr_end
MOV DPL, #007h
isdn_d3_reciv_b_nr_2: MOVX A, @DPTR
ANL A, #0F7h
CJNE A, #005h, isdn_d3_reciv_b_nr_end
isdn_d3_reciv_b_nr_3: INC DPTR
MOV A, dc_reciv_buf_l
CLR C
SUBB A, DPL
JC isdn_d3_reciv_b_nr_end
MOVX A, @DPTR
JB ACC.7, isdn_d3_reciv_b_nr_3
INC DPTR
CJNE A, #018h, isdn_d3_reciv_b_nr_4
SJMP isdn_d3_reciv_b_nr_ok
isdn_d3_reciv_b_nr_4: MOVX A, @DPTR
MOV B, A
MOV A, DPL
ADD A, B
MOV DPL, A
SJMP isdn_d3_reciv_b_nr_3
isdn_d3_reciv_b_nr_end: MOV A, #000h
RET
isdn_d3_reciv_b_nr_ok: INC DPTR
MOVX A, @DPTR
MOV dc_bc_nr, A
MOV B, A
CALL lcd_rd_ctrl
MOV R2, A
MOV A, #0A0h
CALL lcd_wr_ctrl
MOV A, B
ANL A, #003h
ORL A, #030h
CALL lcd_wr_data
MOV A, R2
ORL A, #080h
CALL lcd_wr_ctrl
MOV A, B
JB ACC.0, isdn_d3_reciv_b_nr_ok1
CALL dsc_t_b2_plain
MOV A, B
RET
isdn_d3_reciv_b_nr_ok1: CALL dsc_t_b1_plain
MOV A, B
RET
; -----------------------------------------------------------------------------
wait_period: ANL A, #01Fh
ADD A, period_timer
CJNE A, period_timer, $
RET
; -----------------------------------------------------------------------------
; -----------------------------------------------------------------------------
irq_add_kyb_buffer: MOV R2, A
MOV A, kyb_data_p_irq
MOV R0, A
INC A
ANL A, #007h
MOV kyb_data_p_irq, A
MOV A, R0
ADD A, #kyb_data_buffer
MOV R0, A
MOV A, R2
MOV @R0, A
RET
; -----------------------------------------------------------------------------
irq_period: PUSH PSW
PUSH ACC
PUSH DPL
PUSH DPH
PUSH DPL1
PUSH DPH1
PUSH DPS
SETB RS0
MOV A, WDCON
ANL A, #0F4h
ORL A, #001h
MOV TA, #0AAh
MOV TA, #055h
MOV WDCON, A
INC period_timer
MOV A, period_timer
ANL A, #007h
JNZ irq_period_1
MOV A, #'p'
CALL irq_add_kyb_buffer
SJMP irq_period_end
irq_period_1: MOV DPS, #000h
MOV DPTR, #X_RTC_Min
MOVX A, @DPTR
CJNE A, period_min, irq_period_2
SJMP irq_period_end
irq_period_2: MOV period_min, A
MOV A, #'u'
CALL irq_add_kyb_buffer
irq_period_end: POP DPS
POP DPH1
POP DPL1
POP DPH
POP DPL
POP ACC
POP PSW
RETI
; -----------------------------------------------------------------------------
irq_kyb: PUSH PSW
PUSH ACC
PUSH DPL
PUSH DPH
PUSH DPS
SETB RS0
MOV DPS, #000h
MOV DPTR, #X_KYB
MOVX A, @DPTR
ANL A, #01Fh
MOV DPTR, #irq_kyb_tab
MOVC A, @A+DPTR
CALL irq_add_kyb_buffer
POP DPS
POP DPH
POP DPL
POP ACC
POP PSW
RETI
irq_kyb_tab: DB 'D' ; 00
DB '6' ; 01
DB '4' ; 02
DB ' ' ; 03
DB 'C' ; 04
DB ' ' ; 05
DB '5' ; 06
DB ' ' ; 07
DB 'F' ; 08
DB '9' ; 09
DB '7' ; 0A
DB ' ' ; 0B
DB 'E' ; 0C
DB ' ' ; 0D
DB '8' ; 0E
DB ' ' ; 0F
DB 'H' ; 10
DB '#' ; 11
DB '*' ; 12
DB ' ' ; 13
DB 'G' ; 14
DB ' ' ; 15
DB '0' ; 16
DB ' ' ; 17
DB 'B' ; 18
DB '3' ; 19
DB '1' ; 1A
DB ' ' ; 1B
DB 'A' ; 1C
DB ' ' ; 1D
DB '2' ; 1E
DB ' ' ; 1F
; -----------------------------------------------------------------------------
irq_isdn: PUSH PSW
PUSH ACC
PUSH DPL
PUSH DPH
PUSH DPL1
PUSH DPH1
PUSH DPS
SETB RS0
MOV P2, #0E0h
MOV R0, #R_DSC_CrIr
MOV R1, #R_DSC_Data
MOV DPS, #000h
MOVX A, @R0
MOV dc_ir, A
MOV DPTR, #X_DSC_dsr1
MOVX A, @DPTR
MOV dc_dsr1, A
MOV DPTR, #X_DSC_dsr2
MOVX A, @DPTR
MOV dc_dsr2, A
MOV DPTR, #X_DSC_der
MOVX A, @DPTR
MOV dc_der, A
MOV A, #DSCi_lsr
MOVX @R0, A
MOVX A, @R1
MOV dc_lsr, A
JNB dc_ir.0, irq_isdn_1
LCALL irq_isdn_dc_trans
irq_isdn_1: JNB dc_ir.1, irq_isdn_2
LCALL irq_isdn_dc_reciv
irq_isdn_2: JNB dc_ir.2, irq_isdn_3
LCALL irq_isdn_dc_stat
irq_isdn_3: ; JNB dc_ir.3, irq_isdn_4
; LCALL irq_isdn_dc_err
irq_isdn_4: ; JNB dc_ir.4, irq_isdn_5
; LCALL irq_isdn_bc
irq_isdn_5: JNB dc_ir.5, irq_isdn_6
LCALL irq_isdn_lui
irq_isdn_6: ; JNB dc_ir.6, irq_isdn_7
; LCALL irq_isdn_dc_buf
irq_isdn_7: ; JNB dc_ir.7, irq_isdn_8
; LCALL irq_isdn_mfsb
irq_isdn_8:
POP DPS
POP DPH1
POP DPL1
POP DPH
POP DPL
POP ACC
POP PSW
RETI
; -----------------------------------------------------------------------------
irq_isdn_dc_stat: JNB dc_dsr1.0, irq_isdn_dc_stat_1
LCALL irq_isdn_dc_stat_addr
irq_isdn_dc_stat_1: JNB dc_dsr1.1, irq_isdn_dc_stat_2
LCALL irq_isdn_dc_reciv_cl
irq_isdn_dc_stat_2: JNB dc_dsr1.6, irq_isdn_dc_stat_3
LCALL irq_isdn_dc_trans_cl
irq_isdn_dc_stat_3: RET
irq_isdn_dc_err: JNB dc_der.0, irq_isdn_dc_err_1
LCALL irq_isdn_dc_err_abort
irq_isdn_dc_err_1: JNB dc_der.1, irq_isdn_dc_err_2
LCALL irq_isdn_dc_err_bit
irq_isdn_dc_err_2: JNB dc_der.2, irq_isdn_dc_err_3
LCALL irq_isdn_dc_err_coll
irq_isdn_dc_err_3: JNB dc_der.3, irq_isdn_dc_err_4
LCALL irq_isdn_dc_err_fcs
irq_isdn_dc_err_4: JNB dc_der.4, irq_isdn_dc_err_5
LCALL irq_isdn_dc_err_ovfl
irq_isdn_dc_err_5: JNB dc_der.5, irq_isdn_dc_err_6
LCALL irq_isdn_dc_err_unfl
irq_isdn_dc_err_6: JNB dc_der.6, irq_isdn_dc_err_7
LCALL irq_isdn_dc_err_ovru
irq_isdn_dc_err_7: JNB dc_der.7, irq_isdn_dc_err_8
LCALL irq_isdn_dc_err_unru
irq_isdn_dc_err_8: JNB dc_dsr2.2, irq_isdn_dc_err_9
LCALL irq_isdn_dc_err_lost
irq_isdn_dc_err_9: RET
irq_isdn_lui: JNB dc_lsr.3, irq_isdn_lui_1
LCALL irq_isdn_lui_f3
irq_isdn_lui_1: JNB dc_lsr.4, irq_isdn_lui_2
LCALL irq_isdn_lui_f7
irq_isdn_lui_2: JNB dc_lsr.5, irq_isdn_lui_3
LCALL irq_isdn_lui_f8
irq_isdn_lui_3: JNB dc_lsr.7, irq_isdn_lui_4
LCALL irq_isdn_hsw
irq_isdn_lui_4: RET
irq_isdn_dc_buf: JNB dc_dsr2.0, irq_isdn_dc_buf_1
LCALL irq_isdn_dc_lbr
irq_isdn_dc_buf_1: JNB dc_dsr2.0, irq_isdn_dc_buf_2
LCALL irq_isdn_dc_r_buf
irq_isdn_dc_buf_2: JNB dc_dsr2.0, irq_isdn_dc_buf_3
LCALL irq_isdn_dc_lbt
irq_isdn_dc_buf_3: JNB dc_dsr2.0, irq_isdn_dc_buf_4
LCALL irq_isdn_dc_t_buf
irq_isdn_dc_buf_4: JNB dc_dsr2.0, irq_isdn_dc_buf_5
LCALL irq_isdn_dc_sec
irq_isdn_dc_buf_5: RET
irq_isdn_mfsb: RET
; -----------------------------------------------------------------------------
irq_isdn_dc_trans:
MOV DPS, #000h
MOV DPTR, #X_DSC_DCB
INC DPS
MOV DPTR, #X_Dc_Trans_buf
MOV DPL1, dc_trans_buf_p
MOV A, dc_trans_buf_l
CLR C
SUBB A, DPL1
JZ irq_isdn_dc_trans_3
JC irq_isdn_dc_trans_3
MOV R6, A
CLR C
SUBB A, #008h
JC irq_isdn_dc_trans_2
MOV R7, #008h
SJMP irq_isdn_dc_trans_1
irq_isdn_dc_trans_2: MOV A, R6
MOV R7, A
irq_isdn_dc_trans_1: MOVX A, @DPTR
INC DPTR
INC DPS
MOVX @DPTR, A
INC DPS
DJNZ R7, irq_isdn_dc_trans_1
MOV A, DPL1
MOV dc_trans_buf_p, A
; MOV A, #'d'
; CALL irq_add_kyb_buffer
RET
irq_isdn_dc_trans_3:
; MOV A, #'e'
; CALL irq_add_kyb_buffer
RET
irq_isdn_dc_reciv: MOV DPS, #000h
MOV DPTR, #X_Dc_Reciv_buf
MOV DPL, dc_reciv_buf_p
INC DPS
MOV DPTR, #X_DSC_DCB
MOV R7, #010h
irq_isdn_dc_reciv_1: MOVX A, @DPTR
INC DPS
MOVX @DPTR, A
INC DPTR
INC DPS
DJNZ R7, irq_isdn_dc_reciv_1
MOV A, DPL
MOV dc_reciv_buf_p, A
; MOV A, #'s'
; CALL irq_add_kyb_buffer
RET
irq_isdn_dc_stat_addr: RET
irq_isdn_dc_reciv_cl:
MOV A, #DSCi_drcr
MOVX @R0, A
MOVX A, @R1
MOV R2, A
MOVX A, @R1
MOV A, R2
CLR C
SUBB A, dc_reciv_buf_p
MOV R2, A
; MOV dc_reciv_buf_l, A
MOV DPS, #000h
MOV DPTR, #X_Dc_Reciv_buf
MOV DPL, dc_reciv_buf_p
INC DPS
MOV DPTR, #X_DSC_DCB
MOV A, R2
MOV R7, A
irq_isdn_dc_reciv_cl_1: MOVX A, @DPTR
INC DPS
MOVX @DPTR, A
INC DPTR
INC DPS
DJNZ R7, irq_isdn_dc_reciv_cl_1
INC DPS
MOV A, DPL
MOV dc_reciv_buf_l, A
MOV dc_reciv_buf_p, #000h
MOV A, dc_der
JNZ irq_isdn_dc_reciv_cl_2
MOV A, #'r'
CALL irq_add_kyb_buffer
irq_isdn_dc_reciv_cl_2: RET
irq_isdn_dc_trans_cl:
; MOV A, #'c'
; CALL irq_add_kyb_buffer
RET
irq_isdn_dc_err_abort: RET
irq_isdn_dc_err_bit: RET
irq_isdn_dc_err_coll: RET
irq_isdn_dc_err_fcs: RET
irq_isdn_dc_err_ovfl: RET
irq_isdn_dc_err_unfl: RET
irq_isdn_dc_err_ovru: RET
irq_isdn_dc_err_unru: RET
irq_isdn_dc_err_lost: RET
irq_isdn_bc: RET
irq_isdn_lui_f3: RET
irq_isdn_lui_f7: RET
irq_isdn_lui_f8: RET
irq_isdn_hsw: MOV A, #'o'
JB dc_lsr.6, irq_isdn_hsw_1
MOV A, #'i'
irq_isdn_hsw_1: CALL irq_add_kyb_buffer
RET
irq_isdn_dc_lbr: RET
irq_isdn_dc_r_buf: RET
irq_isdn_dc_lbt: RET
irq_isdn_dc_t_buf: RET
irq_isdn_dc_sec: RET
; -----------------------------------------------------------------------------
; -----------------------------------------------------------------------------
dat_d3_setup_a: DB 00Ah ; lenght
DB 005h, 004h, 003h, 080h, 090h, 0A3h, 07Dh, 002h
DB 091h, 081h
dat_d3_setup_d: DB 002h ; length
DB 005h, 0
dat_d3_dail1: DB 005h
DB 07Bh, 070h, 002h, 081h
; und eine Ziffer
dat_d3_discon: DB 005h
DB 045h, 008h, 002h, 080h, 090h
; -----------------------------------------------------------------------------
; -----------------------------------------------------------------------------
txt_stack_error: DB 'Stack Error !',0
mnu_: DB ' '
DW m_nop
mnu_bksp: DB ' <- '
DW m_bksp
txt_main_menu: DB 'Main Menu ',0
mnu_main: DB 'Main'
DW m_menu_main
txt_crypt_menu: DB 'Crypt Menu',0
mnu_crypt: DB 'Cryp'
DW m_menu_crypt
txt_setup_menu: DB 'Setup Menu',0
mnu_setup: DB 'Setu'
DW m_menu_setup
txt_mon_menu: DB 'B-Mon Menu',0
mnu_mon: DB 'Mon '
DW m_menu_mon
txt_dc_menu: DB 'D-Chn Menu',0
mnu_dc: DB 'D-Ch'
DW m_menu_dc
txt_rtc_menu: DB 'RTC Menu ',0
mnu_rtc: DB 'RTC '
DW m_menu_rtc
mnu_dsci: DB 'DSCi'
DW m_dsci
mnu_mon_off: DB 'off '
DW m_mon_off
mnu_mon_b1: DB 'M-B1'
DW m_mon_b1
mnu_mon_b2: DB 'M-B2'
DW m_mon_b2
mnu_mon_t_b1: DB 'T-B1'
DW m_mon_t_b1
mnu_mon_t_b2: DB 'T-B2'
DW m_mon_t_b2
mnu_c_mon_b1: DB 'M-B1'
DW m_c_mon_b1
mnu_c_mon_b2: DB 'M-B2'
DW m_c_mon_b2
mnu_c_mon_t_b1: DB 'T-B1'
DW m_c_mon_t_b1
mnu_c_mon_t_b2: DB 'T-B2'
DW m_c_mon_t_b2
mnu_1khz: DB '1kHz'
DW m_1khz
mnu_sabme: DB 'sabm'
DW m_sabme
mnu_s0ac: DB 'S0ac'
DW m_s0ac
mnu_lsr: DB 'lsr '
DW m_lsr
mnu_dsr: DB 'dsr '
DW m_dsr
mnu_set_tei DB 'TEI '
DW m_set_tei
mnu_rtc_time: DB 'Time'
DW m_rtc_time
mnu_rtc_date: DB 'Date'
DW m_rtc_date
mnu_rtc_cal: DB 'Cal '
DW m_rtc_cal
mnu_rtc_stop: DB 'Stop'
DW m_rtc_stop
mnu_rtc_go: DB 'Go '
DW m_rtc_go
txt_hex_menu: DB 'Hex Menu ',0
mnu_hex: DB 'Hex '
DW m_hex_menu
mnu_hex_a: DB ' A '
DW m_hex_a
mnu_hex_b: DB ' B '
DW m_hex_b
mnu_hex_c: DB ' C '
DW m_hex_c
mnu_hex_d: DB ' D '
DW m_hex_d
mnu_hex_e: DB ' E '
DW m_hex_e
mnu_hex_f: DB ' F '
DW m_hex_f
mnu_hex_back: DB 'back'
DW m_hex_back
; -----------------------------------------------------------------------------
END